A storage volume is a grouping of data of any arbitrary size that is presented to a user as a single, unitary storage area regardless of the number of storage devices the volume actually spans. Typically, a storage volume utilizes some form of data redundancy, such as by being provisioned from a redundant array of independent disks (RAID) or a disk pool. In some applications, data is assigned to storage devices within a disk pool typically beginning with those regions of the storage devices that have the best performance. For example, one or more storage devices of the disk pool may be hard drives and the data may be assigned to tracks of the hard drives starting from the outside track and working inward. A user may specifically assign one or more volumes to the outer tracks of the drives in order to achieve the best performance possible for those one or more volumes.
When a storage device fails in a disk pool, the data stored on that failed storage device is reassigned to unallocated (available) space on one or more remaining storage devices in the disk pool. Where the one or more remaining storage devices (or just a subset thereof) are hard drives, this unallocated space is typically on the inner tracks. As a result, data previously kept at or near the outer tracks of the failed storage device is reassigned to inner tracks, resulting in degraded performance of the corresponding volume. This degradation of performance for the volume may affect the system's quality of service in an undesirable manner.
Accordingly, the potential remains for improvements that, for example, result in maintaining a desired volume performance even when a storage device fails within a disk pool and the data on that failed storage device is reassigned to other storage devices within the disk pool.